home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / lists / gem / l_1199 / 1171 < prev    next >
Internet Message Format  |  1994-08-27  |  2KB

  1. Date: Sun, 31 Jul 94 21:53:32 +0200
  2. From: thuerman@ibr.cs.tu-bs.de (Urs Thuermann)
  3. Message-Id: <9407311953.AA10880@diana>
  4. To: entropy@terminator.rs.itd.umich.edu
  5. In-Reply-To: "Nicholas S Castellano"'s message of Fri, 29 Jul 1994 04:58:57 -0400 <199407290858.EAA15969@terminator.rs.itd.umich.edu>
  6. Subject: Pvfork()
  7.  
  8. Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>:
  9.  
  10. > I have just recetly learned that vfork() is supposed to block even
  11. > under "real" Unix (if it's available at all).  So there is no real
  12. > need for a non-blocking Pvfork() since no Unix code depends on it :-)
  13.  
  14. Nicholas S Castellano <entropy@terminator.rs.itd.umich.edu>:
  15.  
  16. > Indeed you are correct!  I didn't know that either, but APUE does say
  17. > that it blocks.  Sigh...I was hoping to avoid the need for kludges
  18. > like __fork_and_exit(), by simply using vfork() instead of fork().
  19.  
  20. Yes, U*ix always has fork() but not neccessarily vfork().  vfork() is
  21. a bit of a kludge on systems that don't have efficient copy-on-write
  22. for pages in the process memory.  On PC Linux vfork() is a just
  23. synonym for fork().
  24.  
  25. >From the SunOs man page:
  26.  
  27.      vfork() can be used to create new  processes  without  fully
  28.      copying  the  address  space  of  the  old process, which is
  29.      horrendously inefficient in a paged environment.  It is use-
  30.      ful  when the purpose of fork(2V), would have been to create
  31.      a new system context for  an  execve(2V).   vfork()  differs
  32.      from  fork()  in  that the child borrows the parent's memory
  33.      and thread of control until a call to execve(2V), or an exit
  34.      (either  by  a  call  to exit(2V) or abnormally.) The parent
  35.      process is suspended while the child is using its resources.
  36.  
  37.      [...]
  38.  
  39.      This system call will be eliminated  in  a  future  release.
  40.      System implementation changes are making the efficiency gain
  41.      of vfork() over fork(2V) smaller.  The memory sharing seman-
  42.      tics of vfork() can be obtained through other mechanisms.
  43.  
  44.                             
  45. Urs
  46.